package spese.gestore.androidiani;

import java.io.File;
import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class Nuova_Spesa extends Activity {

	public String dati_intent[];
	public String missione;
	public String root_img;
	public Cursor c_list = null;
	private Object adapter_list_view;
	protected ListViewDb listdb;
	protected ValuteDb vdb;
	protected SpinnerDb sdb;
	protected SpeseDb db;
	protected int mYear;
	protected int mMonth;
	protected int mDay;
	protected String new_place = "";
	protected int new_person = 1;
	protected float new_price = 0;
	protected String new_mdata = "";
	protected String new_valuta = "";
	protected String new_category = "";
	protected String new_description = "Questa è una descrizione di prova per vedere se il testo scorre come dovrebbe... Spero proprio che vada azz!!!";
	protected String bool = "not_from_intent";
	protected String canc = "";
	public Calendar cal = Calendar.getInstance();

	public void onCreate(Bundle b) {
		super.onCreate(b);

		setContentView(R.layout.layout_nuova_spesa);

		Intent intent = getIntent();
		dati_intent = intent.getStringArrayExtra("array");

		missione = dati_intent[0];
		root_img = dati_intent[1];
		bool = dati_intent[2];
		canc = dati_intent[3];

		System.out.println("id ricevuto da Take Photo= " + missione);
		System.out.println("root ricevuto da Take Photo=  " + root_img);

		ListView lV_new_spesa = (ListView) findViewById(R.id.lV_new_spesa);
		Button button_save = (Button) findViewById(R.id.button_nuova_spesa);

		final Toast toast_no_place = Toast.makeText(this,
				"Place's field is required", Toast.LENGTH_LONG);
		final Toast toast_no_category = Toast.makeText(this,
				"Category's field is required", Toast.LENGTH_LONG);
		final Toast toast_no_valuta = Toast.makeText(this,
				"Valuta's field is required", Toast.LENGTH_LONG);

		// Preparo un avviso acustico
		final MediaPlayer mpAlert = MediaPlayer.create(this, R.raw.alert);

		// Preparo un avviso tramite vibrazione
		final Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

		db = new SpeseDb(getApplicationContext());

		db.open();

		listdb = new ListViewDb(getApplicationContext());

		listdb.open();

		vdb = new ValuteDb(getApplicationContext());

		vdb.open();

		sdb = new SpinnerDb(getApplicationContext());

		sdb.open();

		/*
		 * Inizializzo il calendario per inserire nel db la data odierna di
		 * default
		 */
		mYear = cal.get(Calendar.YEAR);
		mMonth = cal.get(Calendar.MONTH);
		mDay = cal.get(Calendar.DAY_OF_MONTH);
		StringBuilder sData_unita = new StringBuilder().append(mDay)
				.append("/").append(mMonth + 1).append("/").append(mYear);

		new_mdata = sData_unita.toString();

		listdb.update("6", "Insert Date", new_mdata, "2");

		listdb.update("12", "Photo", root_img, "2");

		if (!bool.equalsIgnoreCase("not_from_intent")) {
			new_place = db.getRecord(bool, 1);
			new_mdata = db.getRecord(bool, 2);
			new_category = db.getRecord(bool, 3);
			new_description = db.getRecord(bool, 4);
			new_valuta = db.getRecord(bool, 5);
			new_person = Integer.valueOf(db.getRecord(bool, 6));
			new_price = Float.valueOf(db.getRecord(bool, 7));
			root_img = db.getRecord(bool, 8);
			missione = db.getRecord(bool, 9);

			String new_person_s = String.valueOf(new_person);
			String new_price_s = String.valueOf(new_price);

			listdb.update("5", "Place", new_place, "2");
			listdb.update("6", "Insert Date", new_mdata, "2");
			listdb.update("7", "Category", new_category, "2");
			listdb.update("8", "Description", new_description, "2");
			listdb.update("9", "Valuta", new_valuta, "2");
			listdb.update("10", "Person", new_person_s, "2");
			listdb.update("11", "Price", new_price_s, "2");
			listdb.update("12", "Photo", root_img, "2");
		}

		// Chiamo la Query che in questo caso è un all
		c_list = listdb.fetchListViewByActivity("2");

		// Comincio a fare il management del cursore
		startManagingCursor(c_list);

		// Semplice cursor adapter
		SimpleCursorAdapter adapter_list_view = new SimpleCursorAdapter(this, // Contesto
				R.layout.row_new_spesa, // il layout di ogni riga/prodotto
				c_list, // Il cursore
				new String[] {
						ListViewDb.ListViewMetaData.LIST_VIEW_HEADER_KEY,
						ListViewDb.ListViewMetaData.LIST_VIEW_FOOTER_KEY },// questi
																			// colonne
				new int[] { R.id.tV_header_miss, R.id.tV_footer_miss });// in
																		// queste
																		// views

		stopManagingCursor(c_list);

		// Ora la list view si prende questo adapter appena creato sopra
		lV_new_spesa.setAdapter(adapter_list_view);

		// Listener della list view
		lV_new_spesa.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {

				System.out.println("position= " + position + "/id= " + id);
				showDialog((int) id);
			}
		});

		button_save.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {

				// Ciclo if per controllare che i campi editText non siano vuoti
				if (new_place.length() == 0) {
					toast_no_place.show(); // Mostra il toast
					mpAlert.start(); // Fa partire l'alert acustico
					vib.vibrate(300); // Fa partire la vibrazione di 300ms
					return;
				} // Il return fa uscire dall'if e quindi blocca il pulsante

				if (new_category.length() == 0) {
					toast_no_category.show(); // Mostra il toast
					mpAlert.start(); // Fa partire l'alert acustico
					vib.vibrate(300); // Fa partire la vibrazione di 300ms
					return;
				} // Il return fa uscire dall'if e quindi blocca il pulsante

				if (new_valuta.length() == 0) {
					toast_no_valuta.show(); // Mostra il toast
					mpAlert.start(); // Fa partire l'alert acustico
					vib.vibrate(300); // Fa partire la vibrazione di 300ms
					return;
				} // Il return fa uscire dall'if e quindi blocca il pulsante

				if (!bool.equalsIgnoreCase("a")) {
					// Faccio l'update dei dati a come erano prima di essere
					// modificati.
					listdb.update("5", "Place", "ex:Berlino", "2");
					listdb.update("6", "Insert Date", "", "2");
					listdb.update("7", "Category", "", "2");
					listdb.update("8", "Description", "", "2");
					listdb.update("9", "Valuta", "", "2");
					listdb.update("10", "Person", "1", "2");
					listdb.update("11", "Price", "", "2");
					listdb.update("12", "Photo", "", "2");

					// Salvo i dati nel MissioniDb

					db.update(bool, new_place, new_mdata, new_category,
							new_description, new_valuta, new_person, new_price,
							root_img, missione);

					Intent intent = new Intent(Nuova_Spesa.this,
							Lista_Spese.class);
					intent.putExtra("riga missione", missione);
					startActivity(intent);

					System.out.println("Button_do");
				}

				else {
					// Faccio l'update dei dati a come erano prima di essere
					// modificati.
					listdb.update("5", "Place", "ex:Berlino", "2");
					listdb.update("6", "Insert Date", "", "2");
					listdb.update("7", "Category", "", "2");
					listdb.update("8", "Description", "", "2");
					listdb.update("9", "Valuta", "", "2");
					listdb.update("10", "Person", "1", "2");
					listdb.update("11", "Price", "", "2");
					listdb.update("12", "Photo", "", "2");

					// Salvo i dati nel MissioniDb

					db.insertSpesa(new_place, new_mdata, new_category,
							new_description, new_valuta, new_person, new_price,
							root_img, missione);

					Intent intent = new Intent(Nuova_Spesa.this,
							Lista_Spese.class);
					intent.putExtra("riga missione", missione);
					startActivity(intent);

					System.out.println("Button_do");
				}
			}

		});

	}

	/**
	 * Chiudo tutto prima di chiudere l'app
	 * 
	 * @see android.app.Activity#onStop()
	 */
	protected void onStop() {
		try {
			super.onStop();

			if (this.adapter_list_view != null) {
				((CursorAdapter) this.adapter_list_view).getCursor().close();
				this.adapter_list_view = null;
			}

			if (this.c_list != null) {
				this.c_list.close();
			}
		} catch (Exception error) {
			/** Error Handler Code **/
		}// end try/catch (Exception error)
	}// end onStop

	/**
	 * Metodo per riordinare i db quando chiudo l'activity
	 * 
	 * @see android.app.Activity#onDestroy()
	 */
	protected void onDestroy() {
		listdb.close();
		db.close();
		vdb.close();
		sdb.close();
	}

	/**
	 * Metodo che serve per captare uno scroll da parte dell'utente
	 * 
	 * @param view
	 * @param scrollState
	 */
	public void onScrollStateChanged(AbsListView view, int scrollState) {

	}

	/**
	 * Metodo per definire l'azione da intraprendere al scroll da parte
	 * dell'utente
	 * 
	 * @param view
	 * @param firstVisibleItem
	 * @param visibleItemCount
	 * @param totalItemCount
	 */
	public void onScroll(AbsListView view, int firstVisibleItem,
			int visibleItemCount, int totalItemCount) {

		((BaseAdapter) adapter_list_view).notifyDataSetChanged();

	}

	/**
	 * Questo metodo mi permettere di di fare lo switch dei 2 datepicker in base
	 * al pulsante premuto.
	 * 
	 * @see android.app.Activity#onCreateDialog(int)
	 */
	protected Dialog onCreateDialog(int id) {

		System.out.println("Id dello switch= " + id);
		switch (id) {
		case 5:
			getPlace();
			break;

		case 6:
			return new DatePickerDialog(this, sDateSetListener, mYear, mMonth,
					mDay);

		case 7:
			getCategory();
			break;

		case 8:
			getDescription();
			break;

		case 9:
			getValuta();
			break;

		case 10:
			getPerson();
			break;

		case 11:
			getPrice();
			break;

		}
		return null;
	}

	/**
	 * Metodo che appena do l'ok prende la data e la manipola per inserirla
	 * nella stringa sDate
	 */
	protected DatePickerDialog.OnDateSetListener sDateSetListener = new DatePickerDialog.OnDateSetListener() {
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			mYear = year;
			mMonth = monthOfYear;
			mDay = dayOfMonth;
			StringBuilder sData_unita = new StringBuilder().append(mDay)
					.append("/").append(mMonth + 1).append("/").append(mYear);

			new_mdata = sData_unita.toString();

			listdb.update("6", "Insert Date", new_mdata, "2");

			c_list.requery();

			// updateSdate();
		}
	};

	/**
	 * Metodo per generare un alert dialog per prendere la categoria
	 */
	private void getCategory() {

		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		final ListView lV = new ListView(this);

		Cursor c = null;

		// Setto il titolo del mio alert
		miaAlert.setTitle("Choose Category");

		// Chiamo la Query che in questo caso è un all
		c = sdb.fetchSPINNER();

		// Comincio a fare il management del cursore
		startManagingCursor(c);

		// Semplice cursor adapter
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, // Contesto
				android.R.layout.simple_list_item_1, // il layout di ogni
														// riga/prodotto
				c, // Il cursore
				new String[] { SpinnerDb.SpinnerMetaData.SPINNER_CAT_KEY },// questi
																			// colonne
				new int[] { android.R.id.text1 });// in
													// queste
													// views

		stopManagingCursor(c);

		// Ora la list view si prende questo adapter appena creato sopra
		lV.setAdapter(adapter);

		miaAlert.setView(lV);

		miaAlert.setCancelable(true);

		// Ora istanzio il mio alert
		final AlertDialog alert = miaAlert.create();

		// Ora visualizzo il mio alert appena istanziato
		alert.show();

		// Listener della list view
		lV.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {

				String riga = String.valueOf(id);
				String confr = sdb.getRecord(riga, 1);
				System.out.println("position= " + position + "/id= " + id
						+ "/nome= " + confr);
				new_category = sdb.getRecord(riga, 1);
				listdb.update("7", "Category", new_category, "2");
				c_list.requery();

				alert.dismiss();

				return;

			}
		});

	}

	private void getDescription() {

		Toast toast_no_place = Toast.makeText(this, "Insert Category!!!",
				Toast.LENGTH_LONG);
		Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

		System.out.println("Categoria ricevuta= " + new_category + "/");

		if (new_category == "") {
			toast_no_place.show();
			vib.vibrate(300);
			return;
		}
		if (new_category.equalsIgnoreCase("Airplane")) {
			Dialog_trip();
		}
		if (new_category == "Train") {
			Dialog_trip();
		}
		if (new_category == "Bus") {
			Dialog_trip();
		}
		if (new_category == "Taxi") {
			Dialog_trip();
		}
		if (new_category == "Hotel") {
		}
		if (new_category == "Food") {
		}
		if (new_category == "Logging") {
		} else {
		}

	}

	private void Dialog_trip() {

		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		LayoutInflater inflater = (LayoutInflater) this
				.getSystemService(LAYOUT_INFLATER_SERVICE);

		View layout = inflater
				.inflate(
						R.layout.alert_dialog_description_from_to,
						(ViewGroup) findViewById(R.id.layout_dialog_description_from_to));

		// Setto il titolo del mio alert
		miaAlert.setTitle("Insert Description");

		final EditText from = (EditText) findViewById(R.id.eT_from);
		final EditText to = (EditText) findViewById(R.id.eT_to);
		final Button add = (Button) findViewById(R.id.iB_add);
		final Button save = (Button) findViewById(R.id.bSave);
		final Button cancel = (Button) findViewById(R.id.bCancel);

		final Toast toast_no_field = Toast.makeText(this,
				"Place's field is required", Toast.LENGTH_LONG);

		final Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

		miaAlert.setView(layout);

		miaAlert.setCancelable(true);

		// Ora istanzio il mio alert
		final AlertDialog alert = miaAlert.create();

		add.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				return;
			}
		});

		save.setOnClickListener(new OnClickListener() {
			public void onClick(View v2) {

				String new_desc_from = from.getText().toString();
				String new_desc_to = to.getText().toString();

				if (new_desc_from.length() == 0 || new_desc_to.length() == 0) {
					toast_no_field.show(); // Mostra il toast
					vib.vibrate(300); // Fa partire la vibrazione di 300ms
					return;
				}

				new_description = new_desc_from + " - " + new_desc_to;

				listdb.update("8", "Description", new_desc_from + " - "
						+ new_desc_to, "2");

				c_list.requery();

			}
		});

		cancel.setOnClickListener(new OnClickListener() {
			public void onClick(View v3) {

				return;

			}
		});

		// Ora visualizzo il mio alert appena istanziato
		alert.show();

	}

	private void Dialog_trip_add(String[] viaggio_fatto, int passo) {

		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		LayoutInflater inflater = (LayoutInflater) this
				.getSystemService(LAYOUT_INFLATER_SERVICE);

		View layout = inflater.inflate(R.layout.alert_dialog_description_to,
				(ViewGroup) findViewById(R.id.layout_dialog_description_to));

		// Setto il titolo del mio alert
		miaAlert.setTitle("Insert Description");

		final TextView percorso = (TextView) findViewById(R.id.tV_percorso_fatto);
		final EditText to = (EditText) findViewById(R.id.eT_to);
		final Button add = (Button) findViewById(R.id.iB_add);

		miaAlert.setView(layout);

		miaAlert.setCancelable(false);

		add.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {

			}
		});

		// Setto l'azione da intraprendere quando viene dato l'ok dall'utente
		miaAlert.setPositiveButton("Save",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {

						String new_to = to.getText().toString();

						listdb.update("8", "Description", new_to, "2");

						c_list.requery();
						return;

					}
				});

		// Setto l'azione da intraprendere quando viene dato il "no" dall'utente
		miaAlert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						return;
					}
				});

		// Ora istanzio il mio alert
		AlertDialog alert = miaAlert.create();

		// Ora visualizzo il mio alert appena istanziato
		alert.show();
	}

	/**
	 * Questo metodo serve per prendere la valuta della spesa
	 */
	private void getValuta() {

		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		final ListView lV = new ListView(this);

		Cursor c = null;

		// Setto il titolo del mio alert
		miaAlert.setTitle("Choose Valuta");

		// Chiamo la Query che in questo caso è un all
		c = vdb.fetchValuteListView("0");

		// Comincio a fare il management del cursore
		startManagingCursor(c);

		// Semplice cursor adapter
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, // Contesto
				android.R.layout.simple_list_item_1, // il layout di ogni
														// riga/prodotto
				c, // Il cursore
				new String[] { ValuteDb.ValuteMetaData.VALUTE_NAME_KEY },// questi
																			// colonne
				new int[] { android.R.id.text1 });// in
													// queste
													// views

		stopManagingCursor(c);

		// Ora la list view si prende questo adapter appena creato sopra
		lV.setAdapter(adapter);

		miaAlert.setView(lV);

		miaAlert.setCancelable(true);

		// Ora istanzio il mio alert
		final AlertDialog alert = miaAlert.create();

		// Ora visualizzo il mio alert appena istanziato
		alert.show();

		// Listener della list view
		lV.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {

				String riga = String.valueOf(id);
				String confr = vdb.getRecord(riga, 2);
				System.out.println("position= " + position + "/id= " + id
						+ "/nome= " + confr);
				new_valuta = vdb.getRecord(riga, 2);
				listdb.update("9", "Valuta", new_valuta, "2");
				c_list.requery();

				alert.dismiss();

				return;

			}
		});

	}

	/**
	 * Questo metodo serve per prendere il numero delle persone da un alert
	 * dialog
	 */
	private void getPerson() {
		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		LayoutInflater inflater = (LayoutInflater) this
				.getSystemService(LAYOUT_INFLATER_SERVICE);

		View layout = inflater.inflate(R.layout.alert_dialog_int_entry,
				(ViewGroup) findViewById(R.id.layout_dialog_getInt));

		// Setto il titolo del mio alert
		miaAlert.setTitle("Insert Person");

		final EditText input_2 = (EditText) findViewById(R.id.eT_dialog_int);

		input_2.setText("1");

		miaAlert.setView(layout);

		miaAlert.setCancelable(true);

		// Setto l'azione da intraprendere quando viene dato l'ok dall'utente
		miaAlert.setPositiveButton("Save",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {

						String new_person_s = input_2.getText().toString();

						new_person = Integer.valueOf(new_person_s);

						listdb.update("10", "Insert Person", new_person_s, "2");

						c_list.requery();
						return;

					}
				});

		// Setto l'azione da intraprendere quando viene dato il "no" dall'utente
		miaAlert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						return;
					}
				});

		// Ora istanzio il mio alert
		AlertDialog alert = miaAlert.create();

		// Ora visualizzo il mio alert appena istanziato
		alert.show();
	}

	/**
	 * Questo Metodo serve per prendere il prezzo tramite un alert dialog
	 */
	private void getPrice() {

		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		LayoutInflater inflater = (LayoutInflater) this
				.getSystemService(LAYOUT_INFLATER_SERVICE);

		View layout = inflater.inflate(R.layout.alert_dialog_int_entry,
				(ViewGroup) findViewById(R.id.layout_dialog_getInt));

		// Setto il titolo del mio alert
		miaAlert.setTitle("Insert Price");

		final EditText input_3 = (EditText) findViewById(R.id.eT_dialog_int);

		miaAlert.setView(layout);

		miaAlert.setCancelable(true);

		// Setto l'azione da intraprendere quando viene dato l'ok dall'utente
		miaAlert.setPositiveButton("Save",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {

						String new_price_s = input_3.getText().toString();

						new_price = Float.valueOf(new_price_s);

						listdb.update("11", "Insert Price", new_price_s, "2");

						c_list.requery();
						return;

					}
				});

		// Setto l'azione da intraprendere quando viene dato il "no" dall'utente
		miaAlert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						return;
					}
				});

		// Ora istanzio il mio alert
		AlertDialog alert = miaAlert.create();

		// Ora visualizzo il mio alert appena istanziato
		alert.show();
	}

	/**
	 * Questo metodo serve per prendere il posto della spesa tramite un EditText
	 * presente in un alert dialog
	 * 
	 * @return
	 */
	private void getPlace() {

		// Creo l'alert Dialog
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);

		// Setto il titolo del mio alert
		miaAlert.setTitle("Insert Place");

		final EditText input_1 = new EditText(this);
		miaAlert.setView(input_1);

		miaAlert.setCancelable(false);

		// Setto l'azione da intraprendere quando viene dato l'ok dall'utente
		miaAlert.setPositiveButton("Save",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {

						new_place = input_1.getText().toString();

						listdb.update("5", "Insert Place", new_place, "2");

						c_list.requery();
						return;

					}
				});

		// Setto l'azione da intraprendere quando viene dato il "no" dall'utente
		miaAlert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int id) {
						return;
					}
				});

		// Ora istanzio il mio alert
		AlertDialog alert = miaAlert.create();

		// Ora visualizzo il mio alert appena istanziato
		alert.show();

	}

	/**
	 * Con questo metodo impongo al device che al tasto "back" faccia quello
	 * voglio io
	 */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if ((keyCode == KeyEvent.KEYCODE_BACK)) {

			if (canc == "0") {
				File file = new File(root_img);
				file.delete();
			}

			listdb.update("5", "Place", "ex:Berlino", "2");
			listdb.update("6", "Insert Date", "", "2");
			listdb.update("7", "Category", "", "2");
			listdb.update("8", "Description", "", "2");
			listdb.update("9", "Valuta", "", "2");
			listdb.update("10", "Person", "1", "2");
			listdb.update("11", "Price", "", "2");
			listdb.update("12", "Photo", "", "2");
			listdb.close();
			Intent intent = new Intent(Nuova_Spesa.this, Lista_Spese.class);
			intent.putExtra("riga missione", missione);
			startActivity(intent);
			return false;
		}
		return super.onKeyDown(keyCode, event);
	}

}
